﻿///////////////////////////////////////////////////////////////////////////////
// 文件名： SceneNode.cc
// 作者：   671643387@qq.com
// 日期：   2015年11月1日 下午6:39:54
// 简介：   
///////////////////////////////////////////////////////////////////////////////

#include "graphics/graphics/SceneNode.hpp"
using namespace ::graphics::graphics;

SceneNode::SceneNode()
    : type_(GraphicsNode)
    , components_(4)
{

}

SceneNode::SceneNode(Type type)
    : type_(type)
    , components_(4)
{

}

SceneNode::~SceneNode()
{

}

///////////////////////////////////////////////////////////////////////////////

SceneNode::Type SceneNode::GetType() const
{
    return type_;
}

void SceneNode::AddComponent(::graphics::ComponentPtr component)
{
    assert(component);
    components_[component->GetName()] = component;
}

void SceneNode::RemoveComponent(std::string& name)
{
    assert(!name.empty());
    ComponentMap::iterator it = components_.find(name);
    if (it != components_.end())
    {
        components_.erase(it);
    }
}

::graphics::ComponentPtr SceneNode::GetComponent(std::string& name)
{
    assert(!name.empty());
    ComponentMap::iterator it = components_.find(name);
    if (it != components_.end())
    {
        return it->second;
    }
    return ::graphics::ComponentPtr();
}

::graphics::graphics::Scene* SceneNode::GetScene() const
{
    return NULL;
}